
#ifndef __GZP6816D_H__
#define __GZP6816D_H__

#ifdef __cplusplus
extern "C" {
#endif

#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "freertos/event_groups.h"
#include "freertos/queue.h"
#include "esp_freertos_hooks.h"
#include "freertos/semphr.h"
#include "esp_system.h"

#include <errno.h>
#include "esp_err.h"
#include "esp_log.h"


// 定义结构体来存储压力和温度的数据
typedef struct {
//	 uint8_t pressure_H;		 	// 压力高字节
//	 uint8_t pressure_M;			// 压力中字节
//	 uint8_t pressure_L;		 	// 压力低字节
//	uint8_t XGZP_ID;				// 传感器ID
	long int pressure_AD;			// 压力ADC值
	float pressure;		 			// 计算后的压力值
	 float pressure_kpa;
//	 uint8_t temperature_H;		 	// 温度高字节
//	 uint8_t temperature_M;			// 温度中字节
//	uint8_t temperature_L; 			// 温度低字节
//
//	uint8_t pressure_data[5];		// 新增压力数据缓冲区
//
	long int temperature_AD;		// 温度ADC值
//	uint8_t temperature_H1;
//	uint8_t temperature_L1;
	float temperature; 		 		// 计算后的温度值
	
//	float filtered_pressure; 		// 经过滤波处理后的压力值
//	float pressure_value;			// 转换后的压力值
//	int pressure_k;					// 压力校准系数
//	int temperature_k;		 		// 温度校准系数
//
//	 char P_buffer[40];				// 压力的字符串表示
//	char T_buffer[16]; 				// 温度的字符串表示
//	char k_buffer[16]; 				// 校准系数的字符串表示
//
//	 char Tbdy_buffer[16]; 		 	// 人体温度的字符串表示
//	char Tobj_buffer[16]; 			// 物体温度的字符串表示
//	char Tamb_buffer[16]; 		 	// 环境温度的字符串表示
//
//	uint8_t zero_flag;				// 校零标志
//
//	 uint16_t adcx; 		 		// ADC读取值
//	uint16_t filtered_adcx;			// 过滤后的ADC读取值
//	float Voltage; 					// 电压值
//	char ADC_buffer[16];		 	// ADC读取值的字符串表示
//	char Voltage_buffer[16];		// 电压值的字符串表示
//
//	char SPL06_ID;					//SPL06传感器ID
//
//	int pressure_k_index;  			// 当前量程索引
//
//	float slope ;  					// 斜率
//	float offset ; 					// 偏移量
} SensorData;


esp_err_t gzp6816d_init(void);
void gzp6816d_example(void);





#ifdef __cplusplus
}
#endif
#endif /* __GZP6816D_H__ */